/**
 * 1
 *  
 * @Author : Ruoyu Wang
 * @DateTime : 24-9-22 上午9:43
 */

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Node {
    int a;
    int b;
    int c;

    Node() { a = 0, b = 0, c = 0; }

    Node(int a, int b, int c) : a(a), b(b), c(c) {}
};

bool cmp(Node a, Node b) {
    return a.b - a.a > b.b - b.a;
}

int main() {
    int n, k;
    cin >> n >> k;
    vector<Node> nodes(n);
    for (int i = 0; i < n; ++i) {
        cin >> nodes[i].a;
    }
    for (int i = 0; i < n; ++i) {
        cin >> nodes[i].b;
    }
    for (int i = 0; i < n; ++i) {
        cin >> nodes[i].c;
    }
    sort(nodes.begin(), nodes.end(), cmp);
    long long res = 0;
    for (int i = 0; i < nodes.size() && k > 0; ++i) {
        res += min(k, nodes[i].c) * (nodes[i].b - nodes[i].a);
        k -= min(k, nodes[i].c);
    }
    cout << res;
    return 0;
}